package com.example.generator.utils;

import cn.hutool.core.util.StrUtil;
import com.example.generator.entity.TableInfo;
import org.springframework.util.StringUtils;

/**
 * @author：QPX
 * @date：2024-01-26-14:44
 * @remark：对字段名和表明进行处理
 */
public class StringUtil {
    /**
     * 过滤表前缀
     *
     * @param tableInfo
     * @return
     */
    public static TableInfo removePrefix(TableInfo tableInfo) {
        String beanName = tableInfo.getName();
        if (tableInfo.getTableFilterPrefix() != null) {
            beanName = beanName.replace(tableInfo.getTableFilterPrefix(), "");
        }
        tableInfo.setBeanName(StringUtils.capitalize(beanName));
        return tableInfo;
    }

    /**
     * 设置驼峰命名
     *
     * @param tableInfo
     * @return
     */

    public static TableInfo namingHump(TableInfo tableInfo) {
        String[] split = tableInfo.getBeanName().split("_");
        String up = toUp(split);
        tableInfo.setBeanName(up);
        tableInfo.setSomallbeanName(StrUtil.lowerFirst(up));
        tableInfo.getFieldList().forEach(field -> {
            String str = field.getField();
            if (StrUtil.isUpperCase(str)) {
                str = str.toLowerCase();
            }
            field.setBeanField(toUp(str.split("_")));
        });
        return tableInfo;
    }

    /**
     * 设置驼峰命名
     *
     * @param
     * @return
     */

    public static String namingHump(String str) {
        if (StrUtil.isUpperCase(str)) {
            str = str.toLowerCase();
        }
        String[] split = str.split("_");
        return StrUtil.upperFirst(toUp(split));
    }

    /**
     * 首字母大写
     *
     * @param split
     * @return
     */

    public static String toUp(String[] split) {
        StringBuilder stringBuilder = new StringBuilder(split[0]);
        for (int i = 1; i < split.length; i++) {
            stringBuilder.append(StringUtils.capitalize(split[i]));
        }
        return stringBuilder.toString();
    }

}
